package exception;

/**
 * 异常处理机制中的try-catch
 */
public class TryCatchDemo {
    public static void main(String[] args) {
        System.out.println("程序开始了");

        try {
//            String line = null;
//            String line = "a";
            String line = "abc";
            System.out.println(line.length());
            System.out.println(line.charAt(2));
            System.out.println(Integer.parseInt(line));
            //如果try中代码出现异常，那么剩余代码是不会执行的
            System.out.println("!!!!!!!!");//如果上面代码抛出异常，这里不会输出
//        //try语句块中代码不出现异常则catch不会执行
//        }catch(NullPointerException e){
//            System.out.println("出现了空指针，并且处理完毕了");
//
//        //catch可以定义多个，针对try中不同的异常有不同处理方式时需要分别捕获
//        }catch(StringIndexOutOfBoundsException e){
//            System.out.println("出现了字符串下标越界，并粗合理完毕了");
//        }

        //当多个异常有相同处理方式时，可以合并到一个catch中
        }catch(NullPointerException|StringIndexOutOfBoundsException e){
            System.out.println("出现了空指针或下标越界，并处理了");

        //捕获一个超类型异常时，那么try中出现所有的子类异常都会被捕获
        }catch(Exception e){
            System.out.println("反正就是出了个错");
        }
        System.out.println("程序结束了");
    }
}



